The present disclosure relates to verification of a computer program in general, and to testing of a computer program that may migrate from a first host to a second host during the operation of the computer program, in particular.
Computerized devices control almost every aspect of our life—from writing documents to controlling traffic lights. However, computerized devices are bug-prone, and thus require a testing phase in which the bugs should be discovered. The testing phase is considered one of the most difficult tasks in designing a computerized device. The cost of not discovering a bug may be enormous, as the consequences of the bug may be disastrous. For example, a bug may cause the injury of a person relying on the designated behavior of the computerized device. Additionally, a bug in hardware or firmware may be expensive to fix, as patching it requires call-back of the computerized device. Hence, many developers of computerized devices invest a substantial portion of the development cycle to discover erroneous behaviors of the computerized device.
A computer program may be operated by a host, such as a computer server. Today, cloud computing is a well established and utilized computing paradigm. In cloud computing, the computer program may be executed by a “cloud” of processing devices, such as a network of servers and similar computing machines. During execution of a computer program by a cloud, the computer program may migrate from a first host to a second host. For example, the computer program may be executed by a virtual machine. The virtual machine may be first processed by a first server, and later on the virtual machine may be migrated to a second sever to continue execution of the computer program. The servers and other computing machines are deemed as hosts. The hosts may be responsible to provide resources to the virtual machine, and therefore to the computer program. The resources may be, for example, free memory, shared memory, storage space, access to pseudo-random generator, access to a clock, or the like.